/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: GodK
 * Date: 2024-07-23
 * Time: 21:51
 */
public class Test {
    public class Singleton {
        // 声明，并用volatile修饰，保证在多线程环境下的有序性
        private volatile static Singleton instance = null;
        // 私有构造方法
        private Singleton () {}
        // 对外提供一个获取实例的方法，
        public static Singleton getInstance() {
            // 使用双重if检查, 降低锁竞争的频率
            if (instance == null) {
                // instance没有被实例化才去加锁
                synchronized (Singleton.class) {
                    // 获取到锁后再检查一遍，确认instance没有被实例化后去真正的实例化
                    if (instance == null) {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }
}
